#include <iostream>
#include <cmath>

using namespace std;

const int N = 25;

typedef long long LL;

int n, k;
int a[N];

int path; // 记录路径中所选择的数的和
int ret;


//判断是否为素数
bool is_prime(int x)
{
	if(x <= 1) return false;

	for(int i = 2; i <= x / i; i++)
	{
		if(x % i == 0) return false;
	}
	return true;
}

void dfs(int pos, int begin)
{
	if(pos > k)
	{
		if(is_prime(path)) ret++;
		return;
	}

	for(int i = begin; i <= n; i++)
	{
		path += a[i];
		dfs(pos + 1, i + 1);
		path -= a[i]; // 恢复现场
	}
}

int main()
{
	cin >> n >> k;
	for(int i = 1; i <= n; i++) cin >> a[i];

	dfs(1, 1);

	cout << ret << endl;

	return 0;
}

